-use core::{VersionReq,SourceId};
+use core::{VersionReq,SourceId,Summary};
use util::CargoResult;
#[deriving(PartialEq,Clone,Show)]
}
pub fn is_transitive(&self) -> bool {
- self.transitive
+ self.transitive
+ }
+
+ pub fn matches(&self, sum: &Summary) -> bool {
+ debug!("self={}; summary={}", self, sum);
+ debug!(" a={}; b={}", self.namespace, sum.get_source_id());
+
+ self.name.as_slice() == sum.get_name() &&
+ self.req.matches(sum.get_version()) &&
+ &self.namespace == sum.get_source_id()
}
}
}
impl Registry for Vec<Summary> {
- fn query(&mut self, name: &Dependency) -> CargoResult<Vec<Summary>> {
+ fn query(&mut self, dep: &Dependency) -> CargoResult<Vec<Summary>> {
Ok(self.iter()
- .filter(|summary| name.get_name() == summary.get_name())
+ .filter(|summary| dep.matches(*summary))
.map(|summary| summary.clone())
.collect())
}
Ok(())
}).chain_error(|| human(format!("Unable to update {}", namespace)))
}
+
+ fn query_overrides(&self, dep: &Dependency) -> Vec<Summary> {
+ self.overrides.iter()
+ .filter(|s| s.get_name() == dep.get_name())
+ .map(|s| s.clone())
+ .collect()
+ }
}
fn dedup(ids: Vec<SourceId>) -> Vec<SourceId> {
impl<'a> Registry for PackageRegistry<'a> {
fn query(&mut self, dep: &Dependency) -> CargoResult<Vec<Summary>> {
- let overrides = try!(self.overrides.query(dep)); // this can never fail in practice
+ let overrides = self.query_overrides(dep);
if overrides.is_empty() {
// Ensure the requested namespace is loaded
)
fn registry_loc() -> SourceId {
- let remote = Location::parse("http://www.example.com/").unwrap();
+ let remote = Location::parse("http://example.com").unwrap();
SourceId::new(RegistryKind, remote)
}
use semver::Version;
use core::{
Dependency,
- PackageId
+ PackageId,
+ SourceId
};
/// Summaries are cloned, and should not be mutated after creation
self.get_package_id().get_version()
}
+ pub fn get_source_id<'a>(&'a self) -> &'a SourceId {
+ self.package_id.get_source_id()
+ }
+
pub fn get_dependencies<'a>(&'a self) -> &'a [Dependency] {
self.dependencies.as_slice()
}